home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / UBinariesCmds.h < prev    next >
Encoding:
Text File  |  1994-04-12  |  3.7 KB  |  121 lines  |  [TEXT/MPS ]

  1. // Copyright © 1992 Peter Speck, speck@dat.ruc.dk. All rights reserved.
  2. // UBinariesCmds.h
  3.  
  4. #define __UBINARIESCMDS__
  5.  
  6. class TGroupDoc;
  7. class TArticle;
  8. class TNewBinCommand;
  9. class PBinaryDecoder;
  10. class PString255Array;
  11.  
  12. class TProcessArticleLinesCommand : public TCommand
  13. {
  14.     public:
  15.         virtual pascal void DoIt();
  16.  
  17.         TProcessArticleLinesCommand();
  18.         virtual pascal void Initialize();
  19.         virtual void IProcessArticleLinesCommand(CommandNumber itsCommandNumber,
  20.                                                     TGroupDoc *doc, TLongintList *idList, // _OWNS_ the list
  21.                                                     Boolean processHeaders);
  22.         virtual pascal void Free();
  23.  
  24.     protected:
  25.         TLongintList *fIDList;
  26.         PString255Array *fSubjectList;
  27.         CStr255 fGroupDotName;
  28.         TFile *fFile;
  29.         CStr255 fFileName;
  30.         Boolean fProcessHeaders;
  31.         long fNumArticleLines, fLineNo;
  32.         ParamBlockRec *fPBP;
  33.     
  34.         virtual void DoPreProcessing();
  35.         virtual void SetupProgressTexts();
  36.         virtual void ProcessOneArticle(long id, long work1, long work2);
  37.         virtual void SetArticleProgressText(long id); // = 0
  38.         virtual void DoPreProcessArticle(TArticle *article);
  39.         virtual void ProcessArticleLines(TArticle *article, long work1, long work2);
  40.         virtual void ProcessLine(TArticle *article, CStr255 &text);
  41.         virtual void DoPostProcessArticle(TArticle *article);
  42.         virtual void DoPostProcessing();
  43.  
  44.         virtual void FlushBuffer();
  45.         virtual void WriteBytes(const char *p, long noBytes);
  46.         virtual void WriteString(const CStr255 &txt);
  47.         virtual void WriteLine(const CStr255 &txt);
  48.         virtual void WriteChar(char ch);
  49.  
  50.         virtual void MakeDefaultFilename(CStr255 &filename);
  51.         virtual void AskFileName();
  52.         virtual void GetAskFileNamePromt(CStr255 &prompt); // = 0
  53.         virtual void OpenFile();
  54.         virtual void CloseFile();
  55.  
  56.         virtual void GetSubject(long id, CStr255 &s);
  57.     private:
  58.         friend class TNewBinCommand;
  59.         Handle fBufferH;
  60.         long fBytesInBuffer;
  61.  
  62.         virtual void ProcessAllArticles();
  63. };
  64. //---------------------------------------------------------------------
  65. class TSaveArticlesCommand : public TProcessArticleLinesCommand
  66. {
  67.     public:
  68.         virtual pascal void DoIt();
  69.  
  70.         TSaveArticlesCommand();
  71.         virtual pascal void Initialize();
  72.         virtual void ISaveArticlesCommand(CommandNumber itsCommandNumber,
  73.                                                     TGroupDoc *doc, TLongintList *idList); // _OWNS_ the list
  74.         virtual pascal void Free();
  75.     protected:
  76.         long fNumMissingArticles;
  77.         
  78.         virtual void GetAskFileNamePromt(CStr255 &prompt);
  79.  
  80.         virtual void ProcessOneArticle(long id, long work1, long work2);
  81.         virtual void DoPreProcessArticle(TArticle *article);
  82.         virtual void SetupProgressTexts();
  83.         virtual void ProcessLine(TArticle *article, CStr255 &text);
  84.         virtual void DoPostProcessArticle(TArticle *article);
  85. };
  86.  
  87. //---------------------------------------------------------------------
  88.  
  89. class TNewBinCommand : public TProcessArticleLinesCommand
  90. {
  91.     public:
  92.         virtual pascal void DoIt();
  93.  
  94.         TNewBinCommand();
  95.         virtual pascal void Initialize();
  96.         virtual void INewBinCommand(CommandNumber itsCommandNumber,
  97.                                                     TGroupDoc *doc, TLongintList *idList); // _OWNS_ the list
  98.         virtual pascal void Free();
  99.  
  100.     protected:
  101.         virtual void DoPreProcessing(); // sorts the articles!
  102.         virtual void SetupProgressTexts();
  103.         virtual void ProcessLine(TArticle *article, CStr255 &text);
  104.         virtual void DoPostProcessing(); // launches extractor
  105.  
  106.         virtual void AskFileName();
  107.         virtual void GetAskFileNamePromt(CStr255 &prompt);
  108.         virtual void OpenFile();
  109.         virtual void CloseFile();
  110.         virtual void FlushBuffer();
  111.  
  112.     private:
  113.         PBinaryDecoder *fSecretDecoderRing;
  114.         Boolean fExtractorNeeded;
  115.         
  116.         OSErr ScanSubject(long id, short &part, short &noParts);
  117.         void DoTheSorting();
  118. };
  119. //---------------------------------------------------------------------
  120. void ExtractBinaries(CommandNumber itsCommandNumber, TGroupDoc *doc, TLongintList *idList);
  121.